iT邦幫忙

2022 iThome 鐵人賽

DAY 11
0
自我挑戰組

老菜雞挑戰30天學爆Unity&C#會成功嗎?...系列 第 11

【Day11】老菜雞學下樓梯遊戲之Unity Component新增血量屬性

  • 分享至 

  • xImage
  •  

前言

下樓梯的功能都沒問題之後,我們就要來新增Player的血量屬性,不然玩這個遊戲就沒有挑戰性了!/images/emoticon/emoticon15.gif


Player新增血量

  • 首先,要在Player.cs這邊增加一個變數Hp來表示血量,一樣把它設定為SerializeField
[SerializeField]  int Hp;

Player的右欄屬性裡就會多個Hp
https://ithelp.ithome.com.tw/upload/images/20220923/20152411pO2p8Uze5K.jpg
接著,在Start方法裡設定初始血量,也就是遊戲開始後Player的血量,這邊我設為10(可按照自己需求做更改)。

 void Start()
    {
        Hp = 10;
    }

還要新增一個方法ModifyHp來加血量或減血量,這個方法會傳一個參數,也就是Player當時要加的血量,或是要扣的血量。記得要將Hp的上限、下限設定好,上限最高為10(由於我的初始血量設為10),下限則設為0。

void ModifyHp(int num)
    {
        Hp += num;
        if(Hp > 10)
        {
            Hp = 10;
        }
        else if(Hp < 0)
        {
            Hp = 0;
        }
    }

最後,在OnCollisionEnter2D方法裡呼叫ModifyHp,分別在撞到不同階梯時,會有不同的血量修改,這邊我設為當Player撞到Normal階梯時,血量+1;當Player撞到Nails階梯或Ceiling天花板尖刺時,血量-3(可按照自己需求做更改)。

 void OnCollisionEnter2D(Collision2D other)  //other是指碰撞到的東西 
    { 
    if(other.gameObject.tag == "Normal") 
    {
        if(other.contacts[0].normal == new Vector2(0f,1f)) 
        {
             Debug.Log("撞到Normal"); 
            currentFloor = other.gameObject;
            ModifyHp(1);
        }
       
    }	 
    else if(other.gameObject.tag == "Nails") 

    { 
        if(other.contacts[0].normal == new Vector2(0f,1f)) 
        {
             Debug.Log("撞到Nails"); 
             currentFloor = other.gameObject;
             ModifyHp(-3);
        }
        
    } 
      else if(other.gameObject.tag == "Ceiling") 

    { 
        Debug.Log("撞到天花板"); 
        currentFloor.GetComponent<BoxCollider2D>().enabled = false;
        ModifyHp(-3);
    } 

    }
  • 來試玩看看~

    可以看到一按下遊戲開始鍵後Hp變為10,Player在遊戲中撞到Normal血量會+1,而若撞到Nails血量會-3,中途撞到很多次Nails但血量卻不會一直扣到變負的。

心得

現在有了Player血量屬性,等於把遊戲的無敵模式漸漸拿掉~之後就可以更有遊戲規則地去
設計遊戲了!

  • 參考網址:https://www.youtube.com/watch?v=nPW6tKeapsM&ab_channel=GrandmaCan-%E6%88%91%E9%98%BF%E5%AC%A4%E9%83%BD%E6%9C%83
  • 音效、圖片 : 遊戲素材
    (素材由安德斯提供,感謝大大/images/emoticon/emoticon41.gif)

上一篇
【Day10】老菜雞學下樓梯遊戲之碰撞方向判斷+法向量簡介(Unity point&normal)
下一篇
【Day12】老菜雞學下樓梯遊戲之Unity UI&EventSystem簡介
系列文
老菜雞挑戰30天學爆Unity&C#會成功嗎?...30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言